/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gob.cgr.sgrh.ejb.entidad;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author MICROSOF
 */
@Entity
@Table(name = "solicitud_documento")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "SolicitudDocumento.findAll", query = "SELECT s FROM SolicitudDocumento s"),
    @NamedQuery(name = "SolicitudDocumento.findByIdSolicitudDocumento", query = "SELECT s FROM SolicitudDocumento s WHERE s.idSolicitudDocumento = :idSolicitudDocumento"),
    @NamedQuery(name = "SolicitudDocumento.findByNumeroSolicitudDocu", query = "SELECT s FROM SolicitudDocumento s WHERE s.numeroSolicitudDocu = :numeroSolicitudDocu"),
    @NamedQuery(name = "SolicitudDocumento.findByFechaSolicitud", query = "SELECT s FROM SolicitudDocumento s WHERE s.fechaSolicitud = :fechaSolicitud"),
    @NamedQuery(name = "SolicitudDocumento.findByEstado", query = "SELECT s FROM SolicitudDocumento s WHERE s.estado = :estado"),
    @NamedQuery(name = "SolicitudDocumento.findByDetalle", query = "SELECT s FROM SolicitudDocumento s WHERE s.detalle = :detalle"),
    @NamedQuery(name = "SolicitudDocumento.listarPorPersonalFechas", query = "SELECT s FROM SolicitudDocumento s WHERE s.idPersonal.idPersonal = :idPersonal and s.fechaSolicitud between :desde and :hasta and s.estado like :estado"),
    @NamedQuery(name = "SolicitudDocumento.listarPorFechas", query = "SELECT s FROM SolicitudDocumento s WHERE  s.fechaSolicitud between :desde and :hasta and s.estado like :estado"),
    @NamedQuery(name = "SolicitudDocumento.listarUltimoNumeroGenerado", query = "SELECT s FROM SolicitudDocumento s WHERE  s.fechaSolicitud >= :desde  and s.tipoDocumento.idDocumento=:idDocumento and s.numeroDocumento is not null")})
public class SolicitudDocumento implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID_SOLICITUD_DOCUMENTO")
    private Integer idSolicitudDocumento;
    @Basic(optional = false)
    @Size(min = 1, max = 10)
    @Column(name = "NUMERO_SOLICITUD_DOCU")
    private String numeroSolicitudDocu;
    @Column(name = "FECHA_SOLICITUD")
    @Temporal(TemporalType.DATE)
    private Date fechaSolicitud;
    @Size(max = 2)
    @Column(name = "ESTADO")
    private String estado;
    @Size(max = 255)
    @Column(name = "DETALLE")
    private String detalle;
    @JoinColumn(name = "ID_PERSONAL", referencedColumnName = "ID_PERSONAL")
    @ManyToOne(optional = false)
    private Personal idPersonal;
    @JoinColumn(name = "TIPO_DOCUMENTO", referencedColumnName = "ID_DOCUMENTO")
    @ManyToOne(optional = false)
    private Documento tipoDocumento;

    @Column(name = "FECHA_ATENDIDO")
    @Temporal(TemporalType.DATE)
    private Date fechaAtendido; 
    
    @Column(name = "NUMERO_DOCUMENTO")
    private String numeroDocumento;
    
    
    
    public SolicitudDocumento() {
    }

    public SolicitudDocumento(Integer idSolicitudDocumento) {
        this.idSolicitudDocumento = idSolicitudDocumento;
    }

    public SolicitudDocumento(Integer idSolicitudDocumento, String numeroSolicitudDocu) {
        this.idSolicitudDocumento = idSolicitudDocumento;
        this.numeroSolicitudDocu = numeroSolicitudDocu;
    }

    public Integer getIdSolicitudDocumento() {
        return idSolicitudDocumento;
    }

    public void setIdSolicitudDocumento(Integer idSolicitudDocumento) {
        this.idSolicitudDocumento = idSolicitudDocumento;
    }

    public String getNumeroSolicitudDocu() {
        return numeroSolicitudDocu;
    }

    public void setNumeroSolicitudDocu(String numeroSolicitudDocu) {
        this.numeroSolicitudDocu = numeroSolicitudDocu;
    }

    public Date getFechaSolicitud() {
        return fechaSolicitud;
    }

    public void setFechaSolicitud(Date fechaSolicitud) {
        this.fechaSolicitud = fechaSolicitud;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public String getDetalle() {
        return detalle;
    }

    public void setDetalle(String detalle) {
        this.detalle = detalle;
    }

    public Personal getIdPersonal() {
        return idPersonal;
    }

    public void setIdPersonal(Personal idPersonal) {
        this.idPersonal = idPersonal;
    }

    public Documento getTipoDocumento() {
        return tipoDocumento;
    }

    public void setTipoDocumento(Documento tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    public Date getFechaAtendido() {
		return fechaAtendido;
	}

	public void setFechaAtendido(Date fechaAtendido) {
		this.fechaAtendido = fechaAtendido;
	}

	public String getNumeroDocumento() {
		return numeroDocumento;
	}

	public void setNumeroDocumento(String numeroDocumento) {
		this.numeroDocumento = numeroDocumento;
	}

	@Override
    public int hashCode() {
        int hash = 0;
        hash += (idSolicitudDocumento != null ? idSolicitudDocumento.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof SolicitudDocumento)) {
            return false;
        }
        SolicitudDocumento other = (SolicitudDocumento) object;
        if ((this.idSolicitudDocumento == null && other.idSolicitudDocumento != null) || (this.idSolicitudDocumento != null && !this.idSolicitudDocumento.equals(other.idSolicitudDocumento))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "gob.cgr.sgrh.ejb.entidad.SolicitudDocumento[ idSolicitudDocumento=" + idSolicitudDocumento + " ]";
    }
    
}
